package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import configuration.Config;
import configuration.MessageAppli;

/**
 *	Singleton permet de n'avoir qu'une seule instance par appli.
 *	Exemple : Pour la connexion a une base de donnée, cela permet 
 *	d'avoir qu'une seule connexion.
 */
public class Connexion {
	
	private static Connexion singleton;
	private static Connection connexion;
	
	/**
	 * Constructeur privé pour empecher une nouvelle instance.
	 */
	private Connexion() {
		try {
			Class.forName(Config.DRIVER_JDBC);
			connexion = DriverManager.getConnection(Config.CONNEXION);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_CONNEXION,
					MessageAppli.MSG_BDD_TITRE_ERREUR_CO, JOptionPane.ERROR_MESSAGE);
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_CONNEXION,
					MessageAppli.MSG_BDD_TITRE_ERREUR_CO, JOptionPane.ERROR_MESSAGE);
		}
		
	}
	
	/**
	 * Permet de creer une instance, ou de renvoyer l'instance existante.
	 * 
	 * @return
	 * @throws SQLException 
	 */
	private static Connexion getInstance() {
		if (singleton == null){
			singleton = new Connexion();
		}
		return singleton;
	}

	@SuppressWarnings("static-access")
	public static Connection getConnexion() {
		return getInstance().connexion;
	}

	
}
